﻿using Exam.infranstuctrue.Dto.Request.Exam;
using Exam.infranstuctrue.Dto.Respones;
using Exam.infranstuctrue.Tools.Attributes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Exam.Service.Interface
{
    [IProvider]
    public interface IQuestionBankServer
    {
        /// <summary>
        /// 获取题库列表
        /// </summary>
        /// <param name="limit"></param>
        /// <param name="page"></param>
        /// <param name="key"></param>
        /// <param name="IsPublic"></param>
        /// <param name="IsBan"></param>
        /// <returns></returns>
        Task<ApiResult> GetQuestionBank(int page = 1, int limit = 10, string key = "", int IsPublic = -1, int IsBan = -1);
        /// <summary>
        /// 添加题库
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> AddQuestionBank(QuestionBankDto dto);
        /// <summary>
        /// 删除题库
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> DeleteQuestionBank(List<QuestionBankDto> dto);
        /// <summary>
        /// 获取单个题库
        /// </summary>
        /// <param name="qbid"></param>
        /// <returns></returns>
        Task<ApiResult> GetEchoQuestionBank(string qbid, int paeg = 1, int limit = 10, string key = "");
        /// <summary>
        /// 修改题库
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> UpdateQuestionBank(QuestionBankDto dto);
        /// <summary>
        /// 是否发布 
        /// </summary>
        /// <param name="qbid"></param>
        /// <returns></returns>
        Task<ApiResult> IsPublish(List<QuestionBankDto> dto);
        /// <summary>
        /// 是否禁用
        /// </summary>
        /// <param name="qbid"></param>
        /// <returns></returns>
        Task<ApiResult> IsBan(List<QuestionBankDto> dto);
        /// <summary>
        /// 移入试题 --自动
        /// </summary>
        /// <param name="lable"></param>
        /// <param name="lv"></param>
        /// <returns></returns>
        Task<ApiResult> ConstituteJoinQuestion(QuestionBankDto dto);
        Task<ApiResult> GetQuestion(string qbid, int limit = 1, int page = 10, string key = "");
        /// <summary>
        /// 移入试题 --手动
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> ArtificialJoinQuestion(QuestionBankDetaliDto dto);
        /// <summary>
        /// 移除试题
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> RemoveQuestion(QuestionBankDetaliDto dto);
    }
}
